package org.ccay.excel.importer.validate;

import org.ccay.excel.importer.IExcelImportContext;

/**
 * Excel单元格验证器	
 * @author chaowangbang
 * @since Mar 13, 2012
 */
public interface IValidator {
	
	/** 
	 * 验证一个单元格的数据。
	 * 	
	 * @author chaowangbang
	 * @since Mar 20, 2012
	 * @param value
	 * @param ctx
	 * @return
	 */
	IStatus validate(Object value);
	
	/**
	 * @param type
	 */
	public void setType(String type);
	
	/**
	 * @return
	 */
	public String getType();
	
	/** 
	 * 获取i18n的消息主键。
	 * 
	 * @return
	 */
	public String getMessageKey();
	
	/**
	 * 设置i18n的消息主键。
	 * 
	 * @param messageKey
	 */
	public void setMessageKey(String messageKey);
	
	/** 
	 * 获取验证的上下文信息。
	 * 	
	 * @author chaowangbang
	 * @since Mar 27, 2012
	 * @return
	 */
	IValidationContext getValidationContext();
	
	/** 
	 * 设置验证器的上下文信息。
	 * 	
	 * @author chaowangbang
	 * @since Mar 27, 2012
	 * @param context
	 */
	void setValidationContext(IValidationContext context);
	
	/**
	 * 获取Excel导入时的上下文
	 * @return	
	 * @author chaowangbang
	 * @since 2014-9-18
	 */
	IExcelImportContext getExcelImportContext();
	
	/**
	 * 设置Excel导入时的上下文
	 * @param importContext	
	 * @author chaowangbang
	 * @since 2014-9-18
	 */
	void setExcelImportContext(IExcelImportContext importContext);
	
	/**
	 * 是否短路。
	 * 
	 * @return
	 */
	boolean isShortCircuit(); 

}
